package com.nuedu.corejava.ch4;
import java.util.Arrays;
public class SortClass {
	public static void main(String[] args) {
		
		//给定一个int类型的数组，保存班级同学的年龄
		//编写一个算法对年龄进行排序，分别进行升序排序和降序排序
		int []ages= new int[]{19,21,33,22,21,19,18,29,20,19,18};
		
		printArray(ages);
		
		System.out.println();
		bubbleSortAsc(ages);
		printArray(ages);
		System.out.println();
		
		bubbleSortDesc(ages);
		printArray(ages);
		System.out.println();
		
		int [] ages2={11,12,44,12,44,76,23,23,5,5643,};
		//import java.util.Arrays; - java语言的api工具类，这是对数组进行操作的工具
		Arrays.sort(ages2);//是升序排序
		printArray(ages2);
		System.out.println();
		for(int i=ages2.length-1;i>=0;i--){
			System.out.print(ages2[i]+"\t");//降序排序可以反着输出；
			
		}
		
		
	}
	//在一个类中可以编写一些方法
	//方法的基本结构
	//1.public 访问修饰符  static 静态修饰符 - 可选
	//2.void 返回值类型                                                -必选
	//3.bubbleSortAsc方法名称                            -必选
	//4.（int[] data) 参数列表                           参数变量可选，括号必须有
	//5.{大括号称为方法体}               -在非抽象方法中必须有大括号部分，抽象方法没有方法体；
	public static void printArray(int[] data) {
		for(int d : data){
			System.out.print(d+"\t");
		}
	}
	
	public static void bubbleSortDesc(int[] data) {
		if (data==null) {return;}
		int tmp=0;
		for(int i=1;i<data.length;i++){
			for(int k=0;k<data.length-i;k++){
				if(data[k]<data[k+1]){//小于号是升序
					tmp=data[k];
					data[k]=data[k+1];
					data[k+1]=tmp;
				}
			}
			
		}
		
	}
	
	public static void bubbleSortAsc(int[] data) {
		int tmp=0;
		if (data==null) {return;}
		for(int i=1;i<data.length;i++){
			for(int k=0;k<data.length-i;k++){
				if(data[k]>data[k+1]){//大于号是升序
					tmp=data[k];
					data[k]=data[k+1];
					data[k+1]=tmp;
				}
			}
			
		}
		
	}
	
	

}
